As the number of computing devices increase across society, electronic data management has become increasingly challenging. Modern devices create and use ever increasing amounts of electronic data ranging from digital photos and videos, to large data sets related to any number of topics including energy exploration, human resources, seismic activity, and gene research. This explosion in digital data has naturally led to ever increasingly large amounts of data that must be stored. Correspondingly, the data storage field is under constant pressure to increase size, performance, accessibility, reliability, security, and efficiency of data storage systems.
Computing devices typically include file systems that provide procedures for storing, retrieving, and updating data associated with operations performed by an application or program executing on those computing devices. These file systems also manage the available space on the device(s) that store such data. It is important that file systems also be equipped with data recovery tools to minimize the loss of pertinent data as a result of a failure event or loss of power, such as from a power failure or hardware failure.
As a result, conventional file systems may include an intent logging feature to improve the resiliency of computer operations in the event of such failures. Intent logging refers to a process where the file system writes a record of the intent to perform a particular operation before actually performing that particular operation. The record is usually written to an intent log that is maintained in some relatively permanent or otherwise non-volatile medium, such as a hard disk.
In such conventional file systems, the intent log is configured to perform a batch commit for multiple I/O request received over time. As an example, as the intent log receives a series of I/O requests over a period of time, the requests are batched and committed collectively to write the data to the appropriate, storage area and/or slog. As a result, the storage area may receive a burst of writes during certain periods, which can add a significant amount of overhead, which reduces overall processing performance.
It is with these and other issues in mind that various aspects of the present disclosure were developed.